#ifndef SWEGL_MATH_H
#define SWEGL_MATH_H

#include "swegl/common.h"
#include <emmintrin.h>

namespace swegl
{

class Quaternion;
class Matrix3x3;
class Matrix4x4;
class Sphere;
class AABox;
class Plane;
	
template<typename T>
class Rect
{
public:
	Rect();
	Rect(T x, T y, T width, T height);
	
	T x;
	T y;
	T width;
	T height;
};

template<typename T>
inline Rect<T>::Rect() :
	x(0),
	y(0),
	width(0),
	height(0)
{
}

template<typename T>
inline Rect<T>::Rect(T x, T y, T width, T height) :
	x(x),
	y(y),
	width(width),
	height(height)
{
}

} // namespace sh

#include "swegl/math/functions.h"
#include "swegl/math/vector2.h"
#include "swegl/math/vector3.h"
#include "swegl/math/vector4.h"
#include "swegl/math/quaternion.h"
#include "swegl/math/matrix3x3.h"
//#include "swegl/math/matrix4x3.h"
#include "swegl/math/matrix4x4.h"
#include "swegl/math/sphere.h"
#include "swegl/math/axis_aligned_box.h"
#include "swegl/math/plane.h"

#endif
